// 引入第三方包express且创建一个服务器app
const express = require('express');
const app = express();
// 用express处理json
app.use(express.json());
// 使用cors处理跨域问题，域名、协议、端口三个存在一个不同都为跨域。
app.use(require('cors')());


// 创建一个页面
app.get('/', async(req, res) => {
    res.send('index')
})

// 引入mongoose数据库，并连接
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/element-admin', {
    useCreateIndex: true,
    useFindAndModify: true,
    useNewUrlParser: true,
    useUnifiedTopology: true,
});
// mongoose数据库建模，此处为文章模块建立数据库
const Article = mongoose.model('Article', new mongoose.Schema({
    title: { type: String },
    body: { type: String },
}))

// Post 新增文章的api接口
app.post('/api/articles', async(req, res) => {
    const article = await Article.create(req.body)
    res.send(article)
})
// Get查找（请求）文章列表信息api接口
app.get('/api/articles', async(req, res) => {
    const articles = await Article.find()
    res.send(articles)
})
// Delete删除 文章某id信息api接口
app.delete('/api/articles/:id', async (req, res) => {
    await Article.findByIdAndDelete(req.params.id)
    res.send({
        status: true
    })
})
// 查询某篇文章详情页
app.get('/api/articles/:id', async(req, res) => {
    const article = await Article.findById(req.params.id)
    res.send(article)
})
// Put 覆盖性修改 修改文章列表信息api接口
app.put('/api/articles/:id', async(req, res) => {
    const article = await Article.findByIdAndUpdate(req.params.id, req.body)
    res.send(article)
})

// 启动app服务器
app.listen(3001, () => {
    console.log('http://localhost:3001')
})